package com.niuwa.p2p.service.channel;

import java.util.List;

import com.niuwa.p2p.entity.channel.Corporation;
import com.niuwa.p2p.entity.credit.CompanyCourtInfo;
import com.niuwa.p2p.entity.credit.CorpBaseNationalInfo;
import com.niuwa.p2p.entity.credit.PersonCourtInfo;
import com.niuwa.p2p.vo.channel.ChannelInfoCheckVo;

public interface IChannelInfoCheckService {

	/**
	 * 根据渠道代码获取渠道信息
	 * 
	 * @param channelCode
	 * @return
	 */
	public Corporation getCorporationInfo(String corpCode);

	/**
	 * 获取公司法人
	 * 
	 * @param corpCode
	 * @return
	 */
	public ChannelInfoCheckVo getCorpLegalMan(String corpCode);

	/**
	 * 获取公司总经理
	 * 
	 * @param corpCode
	 * @return
	 */
	public ChannelInfoCheckVo getCorpGeneralManager(String corpCode);

	/**
	 * 获取公司信息
	 * 
	 * @param corpCode
	 * @return
	 */
	public ChannelInfoCheckVo getCorp(String corpCode);

	/**
	 * 获取公司被法院执行信息
	 * 
	 * @param corpCode
	 * @return
	 */
	public CompanyCourtInfo getCorpCourtInfo(String corpName);

	/**
	 * 获取个人的被法院执行信息
	 * 
	 * @param corpName
	 * @return
	 */
	public PersonCourtInfo getPersonCourtInfo(String name, String documentNo);

	/**
	 * 获取企业基本信息
	 * 
	 * @param corpCode
	 * @return
	 */
	public CorpBaseNationalInfo getCorpBaseNationalInfo(String corpName);

	/**
	 * 获取股东信息
	 * 
	 * @param corpCode
	 * @return
	 */
	public List<ChannelInfoCheckVo> getShareholder(String corpCode);

	/**
	 * 保存公司征信查询记录
	 * 
	 * @param corpName
	 * @param userId
	 */
	public void saveCorpCheckLog(String corpName, long userId);

	/**
	 * 保存个人征信查询记录
	 * 
	 * @param name
	 * @param certNo
	 * @param userId
	 */
	public void saveCertCheckLog(String name, String certNo, long userId);

	/**
	 * 选择该公司在黑名单中的自然人或者法人
	 * 
	 * @param corpCode
	 * @return
	 */
	public List<ChannelInfoCheckVo> selectBlackList(String corpCode, long userId);

	/**
	 * 选择该公司在黑名单中的法人及总经理
	 * 
	 * @param corpCode
	 * @return
	 */
	public List<ChannelInfoCheckVo> selectBlackListManager(String corpCode);

	/**
	 * 选择该公司在黑名单中的个人股东
	 * 
	 * @param corpCode
	 * @return
	 */
	public List<ChannelInfoCheckVo> selectBlackListPersonShareholder(String corpCode);

	/**
	 * 选择该公司在黑名单中的法人股东
	 * 
	 * @param corpCode
	 * @return
	 */
	public List<ChannelInfoCheckVo> selectBlackListCorpShareholder(String corpCode);

	/**
	 * 如果只有名字，就匹配名字 如果证件或者邮箱或者手机有一个匹配的，就算进入黑名单
	 * 
	 * @param channelInfoCheckVo
	 * @return
	 */
	public int checkBlackList(ChannelInfoCheckVo channelInfoCheckVo);

	List<ChannelInfoCheckVo> getPersonShareholder(String corpCode);

	List<ChannelInfoCheckVo> getCorpShareholder(String corpCode);

	/**
	 * 征信验证
	 * 
	 * @param credits
	 * @param court
	 * @param aic
	 */
	public void checkCredit(List<Object> credits, List<ChannelInfoCheckVo> court, List<ChannelInfoCheckVo> aic);

	/**
	 * 个人征信验证
	 * 
	 * @param person
	 * @param court
	 */
	public void checkPersonCredit(ChannelInfoCheckVo person, List<ChannelInfoCheckVo> court);

	/**
	 * 企业征信验证
	 * 
	 * @param person
	 * @param court
	 * @param aic
	 */
	public void checkCorpCredit(ChannelInfoCheckVo person, List<ChannelInfoCheckVo> court, List<ChannelInfoCheckVo> aic);
}
